Package de.yaams.extensions.rgssproject.type

Source Code of de.yaams.extensions.rgssproject.type.RGSSProjectType

/**
*
*/
package de.yaams.extensions.rgssproject.type;

import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;

import org.apache.log4j.Priority;
import org.ini4j.Wini;

import de.yaams.extensions.rgssproject.RTP;
import de.yaams.maker.helper.FileHelper;
import de.yaams.maker.helper.NetHelper;
import de.yaams.maker.helper.gui.YEx;
import de.yaams.maker.helper.gui.YMessagesDialog;
import de.yaams.maker.helper.gui.form.core.FormBuilder;
import de.yaams.maker.helper.language.I18N;
import de.yaams.maker.programm.YAamsCore;
import de.yaams.maker.programm.project.Project;
import de.yaams.maker.programm.project.ProjectType;
import de.yaams.maker.programm.project.tab.ProjectHomeTab;
import de.yaams.maker.programm.ress.RessInfoFile;
import de.yaams.maker.programm.ress.RessRess;
import de.yaams.maker.programm.tabs.YaTab;

/**
* @author Praktikant
*
*/
public abstract class RGSSProjectType extends ProjectType {

  /**
   * @param type
   */
  public RGSSProjectType(String type) {
    super(type);
  }

  /*
   * (non-Javadoc)
   *
   * @see
   * de.yaams.maker.programm.project.ProjectType#leftForm(de.yaams.maker.helper
   * .gui.form.core.FormBuilder, de.yaams.maker.programm.project.Project)
   */
  @Override
  public void leftForm(FormBuilder form, Project project) {
    // TODO Auto-generated method stub

  }

  /*
   * (non-Javadoc)
   *
   * @see
   * de.yaams.maker.programm.project.ProjectType#openHomeTab(de.yaams.maker
   * .programm.project.Project)
   */
  @Override
  public YaTab getHomeTab(Project project) {

    return new ProjectHomeTab(project);

  }

  /**
   * Helpermethod to read the data
   *
   * @param p
   */
  protected void readGameIniToData(Project p) {
    // read Game.ini
    try {
      Wini ini = new Wini(new File(p.getPath(), "Game.ini"));
      p.getData().put("library", ini.get("Game", "Library"));
      p.getData().put("scripts", ini.get("Game", "Scripts"));
    } catch (Throwable t) {
      YEx.info("Can not edit " + new File(p.getPath(), "Game.ini"), t);
    }

    YMessagesDialog mess = new YMessagesDialog(I18N.t("Probleme beim Öffnen des Projects {0}", p.getTitle()), "rgss.project.open");

    // crypted?
    if (new File(p.getPath(), "Game.rgssad").exists() || new File(p.getPath(), "Game.rgssa2").exists()) {
      mess.add(I18N.t("Encrypted Games not supported."), Priority.INFO_INT);
    }

    mess.showOk();
  }

  /**
   * Helpermethod to save game settings
   *
   * @param p
   */
  protected void saveDataToGameIni(Project p) {
    // save title
    try {
      Wini ini = new Wini(new File(p.getPath(), "Game.ini"));
      ini.put("Game", "Title", p.getTitle());
      ini.put("Game", "Library", p.getData().get("library"));
      ini.store();
    } catch (Throwable t) {
      YEx.info("Can not edit " + new File(p.getPath(), "Game.ini"), t);
    }
  }

  /**
   * Helpermethod to download and extract a template
   *
   * @param p
   * @param type
   */
  protected boolean extractTemplate(Project p, String type) {
    // has template?
    File zip = new File(YAamsCore.programPath, "templates" + File.separator + type + ".zip");

    // create folder
    FileHelper.mkdirs(zip.getParentFile());
    if (!zip.exists()) {
      // dl
      if (!NetHelper.downloadFile(zip, NetHelper.getContentAsString("http://www.yaams.de/file/?typ=template&name=" + type))) {
        return false;
      }
    }

    // can? extract
    if (!FileHelper.extractArchive(zip, p.getPath())) {
      return false;
    }

    // edit Game.ini
    try {
      Wini ini = new Wini(new File(p.getPath(), "Game.ini"));
      ini.put("Game", "Title", p.getTitle());
      ini.store();
    } catch (Throwable t) {
      YEx.info("Can not edit " + new File(p.getPath(), "Game.ini"), t);
      return false;
    }
    return true;
  }

  /*
   * (non-Javadoc)
   *
   * @see
   * de.yaams.maker.programm.project.ProjectType#getFilesInFolder(de.yaams
   * .maker.programm .project.Project, java.io.File)
   */
  @Override
  public ArrayList<RessInfoFile> getFilesInFolder(Project project, String folder) {
    ArrayList<RessInfoFile> res = new ArrayList<RessInfoFile>();
    boolean graphic = folder.contains("Graphic");
    String[] end = graphic ? new String[] { ".png", ".jpg", ".jpeg", ".jpe", ".gif", ".bmp" } : new String[] { ".mp3", ".ogg", ".wma",
        ".mid", ".midi" };
    File fold = new File(project.getPath(), folder);

    // list folder
    if (fold.canRead() && fold.isDirectory()) {
      for (File f : fold.listFiles()) {
        // right file?
        if (!f.canRead() || !f.isFile() || f.isHidden()) {
          continue;
        }
        // look in the project
        if (RessRess.endWithExtention(f, end)) {
          res.add(new RessInfoFile(project, folder + File.separator + f.getName()));
        }
      }
    }

    HashMap<String, File> rtp = RTP.getRTPs(project);

    // add rtp
    for (String name : rtp.keySet()) {
      // build path
      fold = new File(rtp.get(name), folder);

      // contain files?
      if (fold.listFiles() == null || fold.listFiles().length == 0) {
        continue;
      }

      // list folder
      for (File f : fold.listFiles()) {
        // right file?
        if (!f.canRead() || !f.isFile()) {
          continue;
        }

        // look in the project
        if (RessRess.endWithExtention(f, end)) {
          RessInfoFile r = new RessInfoFile(project, folder + File.separator + f.getName());
          r.setAbsolutePath(f);
          r.setCanDelete(false);
          res.add(r);
        }
      }
    }

    return res;
  }

  /*
   * (non-Javadoc)
   *
   * @see
   * de.yaams.maker.programm.project.ProjectType#getFilesInFolder(de.yaams
   * .maker.programm .project.Project, java.io.File)
   */
  @Override
  public File getFile(Project project, String file) {
    boolean graphic = file.contains("Graphic");
    List<String> end = graphic ? Arrays.asList("", ".png", ".jpg", ".jpeg", ".jpe", ".gif", ".bmp") : Arrays.asList("", ".mp3", ".ogg",
        ".wma", ".mid", ".midi");
    File path = new File(project.getPath(), file);

    // right file?
    if (path.canRead() && path.isFile()) {
      return path;
    }

    // look in the project
    for (final String e : end) {
      path = new File(project.getPath(), file + e);
      if (path.canRead() && path.isFile()) {
        return path;
      }
    }

    HashMap<String, File> rtp = RTP.getRTPs(project);

    // add rtp
    for (String name : rtp.keySet()) {
      // build path
      path = new File(rtp.get(name), file).getParentFile();

      // contain files?
      if (path.listFiles() == null || path.listFiles().length == 0) {
        continue;
      }

      // look in the project
      for (final String e : end) {
        path = new File(rtp.get(name), file + e);
        if (path.canRead() && path.isFile()) {
          return path;
        }
      }
    }

    return null;
  }
}
TOP

Related Classes of de.yaams.extensions.rgssproject.type.RGSSProjectType

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.